package edu.asselvi.seguros.dao;

import java.sql.Connection; 
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import edu.asselvi.seguros.db.DbUtils;
import edu.asselvi.seguros.exception.ESegurosErros;
import edu.asselvi.seguros.exception.SegurosException;
import edu.asselvi.seguros.pojo.Marca;


public class MarcaDao extends DbUtils {

	
	Connection conn;

	public MarcaDao (Connection conn) {
		this.conn = conn; 
	}

	
	public Marca insert(Marca marca) throws SegurosException{

		String sql = "INSERT INTO MARCAS (ID_MARCA, DISCRIMINACAO) VALUES (?, ?)";
		PreparedStatement p = null;

		try {
			marca.setId_marca(getNextId("SEQ_MARCAS", conn)); 
			
			p = conn.prepareStatement(sql);
			int cont = 1;
			p.setInt(cont++, marca.getId_marca());
			p.setString(cont++, marca.getDiscriminacao());

			p.executeUpdate();

		} catch (SQLException e) {
			throw new SegurosException(ESegurosErros.ERRO_INSERCAO);
			
		} finally {
			close(p);
		}
		return marca;
	}

	
	
	public List<Marca> list() throws SQLException, SegurosException{

		String sql = "SELECT * FROM MARCAS";

		List<Marca> lista = null;
		java.sql.ResultSet rs = null;
		PreparedStatement p = null;
		
		try {
			lista = new ArrayList<Marca>();
			p = conn.prepareStatement(sql);
			rs = p.executeQuery();
			
			while (rs.next()) {
				Marca marca = new Marca();
				
				marca.setId_marca(rs.getInt("ID_MARCA"));
				marca.setDiscriminacao(rs.getString("DISCRIMINACAO"));

				lista.add(marca);
			}
			
			if (lista.isEmpty()){
				throw new SegurosException(ESegurosErros.ERRO_ZERO_REGISTROS);
			} 
			
			
		} finally {
			close(p);
			close(rs);
		}

		return lista;
	}

	
	
}
